home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 1 / Macwelt DVD 1.toast / Software für Mac-OS X / Entwickler-Tools / netbeans / modules / ext / djava.jar / koala / dynamicjava / interpreter / TreeClassFinder.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-03-14  |  2.8 KB  |  93 lines

  1. package koala.dynamicjava.interpreter;
  2.  
  3. import koala.dynamicjava.classinfo.ClassFinder;
  4. import koala.dynamicjava.classinfo.ClassInfo;
  5. import koala.dynamicjava.classinfo.JavaClassInfo;
  6. import koala.dynamicjava.classinfo.TreeClassInfo;
  7. import koala.dynamicjava.interpreter.context.Context;
  8. import koala.dynamicjava.tree.TypeDeclaration;
  9. import koala.dynamicjava.util.ImportationManager;
  10.  
  11. public class TreeClassFinder implements ClassFinder {
  12.    protected Context context;
  13.    protected Interpreter interpreter;
  14.    protected ClassPool classPool;
  15.  
  16.    public Interpreter getInterpreter() {
  17.       return this.interpreter;
  18.    }
  19.  
  20.    public String getCurrentPackage() {
  21.       return this.context.getCurrentPackage();
  22.    }
  23.  
  24.    public ImportationManager getImportationManager() {
  25.       return this.context.getImportationManager();
  26.    }
  27.  
  28.    public ClassInfo lookupClass(String var1) throws ClassNotFoundException {
  29.       if (this.classPool.contains(var1)) {
  30.          return this.classPool.get(var1);
  31.       } else {
  32.          try {
  33.             return new JavaClassInfo(this.context.lookupClass(var1, (String)null));
  34.          } catch (TreeCompiler.PseudoError var3) {
  35.             return var3.getClassInfo();
  36.          }
  37.       }
  38.    }
  39.  
  40.    public ClassInfo lookupClass(String var1, ClassInfo var2) throws ClassNotFoundException {
  41.       String var3 = var2.getName();
  42.       if (this.classPool.contains(var1)) {
  43.          return this.classPool.get(var1);
  44.       } else {
  45.          String var4 = var3 + "$" + var1;
  46.          if (this.classPool.contains(var4)) {
  47.             return this.classPool.get(var4);
  48.          } else {
  49.             try {
  50.                return new JavaClassInfo(this.context.lookupClass(var1, var3));
  51.             } catch (ClassNotFoundException var12) {
  52.                ClassInfo var5 = var2.getDeclaringClass();
  53.  
  54.                try {
  55.                   if (var5 != null) {
  56.                      return new JavaClassInfo(this.context.lookupClass(var5.getName() + "$" + var1));
  57.                   } else {
  58.                      throw new ClassNotFoundException(var1);
  59.                   }
  60.                } catch (ClassNotFoundException var10) {
  61.                   var5 = var2;
  62.  
  63.                   while((var5 = var5.getSuperclass()) != null) {
  64.                      try {
  65.                         return new JavaClassInfo(this.context.lookupClass(var5.getName() + "$" + var1));
  66.                      } catch (ClassNotFoundException var8) {
  67.                      } catch (TreeCompiler.PseudoError var9) {
  68.                         return var9.getClassInfo();
  69.                      }
  70.                   }
  71.  
  72.                   throw new ClassNotFoundException(var1);
  73.                } catch (TreeCompiler.PseudoError var11) {
  74.                   return var11.getClassInfo();
  75.                }
  76.             } catch (TreeCompiler.PseudoError var13) {
  77.                return var13.getClassInfo();
  78.             }
  79.          }
  80.       }
  81.    }
  82.  
  83.    public ClassInfo addClassInfo(String var1, TypeDeclaration var2) {
  84.       return this.classPool.add(var1, new TreeClassInfo(var2, this));
  85.    }
  86.  
  87.    public TreeClassFinder(Context var1, Interpreter var2, ClassPool var3) {
  88.       this.context = var1;
  89.       this.interpreter = var2;
  90.       this.classPool = var3;
  91.    }
  92. }
  93.